@import '../../style/themes/index';
@import '../../style/mixins/index';
@import '../../input/style/mixin';

@select-prefix-cls: ~'@{vcu-prefix}-select';

.selection__clear() {
  position      : absolute;
  top           : 50%;
  right         : @control-padding-horizontal - 1px;
  z-index       : 1;
  display       : inline-block;
  width         : 12px;
  height        : 12px;
  margin-top    : -6px;
  color         : @disabled-color;
  font-size     : @font-size-sm;
  font-style    : normal;
  line-height   : 12px;
  text-align    : center;
  text-transform: none;
  background    : @component-background;
  cursor        : pointer;
  opacity       : 0;
  transition    : color 0.3s ease, opacity 0.15s ease;
  text-rendering: auto;

  &::before {
    display: block;
  }

  &:hover {
    color: @text-color-secondary;
  }
}

.@{select-prefix-cls} {
  .reset-component;

  position: relative;
  display : inline-block;
  outline : 0;

  ul,
  ol {
    margin    : 0;
    padding   : 0;
    list-style: none;
  }

  >ul>li>a {
    padding         : 0;
    background-color: @component-background;
  }

  // arrow
  &-arrow {
    .iconfont-mixin();

    position        : absolute;
    top             : 50%;
    right           : @control-padding-horizontal - 1px;
    margin-top      : -@font-size-sm / 2;
    color           : @disabled-color;
    font-size       : @font-size-sm;
    line-height     : 1;
    transform-origin: 50% 50%;

    & &-icon svg {
      transition: transform 0.3s;
    }
  }

  //prefixIcon
  &__prefix-icon {
    .iconfont-mixin();

    position        : absolute;
    top             : 50%;
    left           : @control-padding-horizontal - 1px;
    margin-top      : -@font-size-sm / 2;
    font-size       : @font-size-sm;
    line-height     : 1;
    transform-origin: 50% 50%;

    & &-icon svg {
      transition: transform 0.3s;
    }
  }

  &-selection {
    display         : block;
    box-sizing      : border-box;
    background-color: @select-background;
    border          : @border-width-base @border-style-base @select-border-color;
    // strange align fix for chrome but works
    // https://gw.alipayobjects.com/zos/rmsportal/VFTfKXJuogBAXcvfAUWJ.gif
    border-top-width: @border-width-base + 0.02px;
    border-radius   : @border-radius-base;
    outline         : none;
    transition      : all 0.3s @ease-in-out;
    user-select     : none;

    &:hover {
      .hover;
    }

    .@{select-prefix-cls}-focused &,
    &:focus,
    &:active {
      .active;
    }

    &__clear {
      .selection__clear();
    }

    &:hover &__clear {
      opacity: 1;
    }

    &-selected-value {
      float        : left;
      max-width    : 100%;
      overflow     : hidden;
      white-space  : nowrap;
      text-overflow: ellipsis;
    }
  }

  &-no-arrow &-selection-selected-value {
    padding-right: 0;
  }

  &-disabled {
    color: @disabled-color;
  }

  &-disabled &-selection {
    background: @input-disabled-bg;
    cursor    : not-allowed;

    &:hover,
    &:focus,
    &:active {
      border-color: @select-border-color;
      box-shadow  : none;
    }

    &__clear {
      display       : none;
      visibility    : hidden;
      pointer-events: none;
    }
  }

  &-readonly &-selection {
    color     : @text-color;
    background: @select-background;
    cursor    : default;
  }


  &-disabled &-selection--multiple &-selection__choice {
    padding-right: 10px;
    color        : fade(@black, 33%);
    background   : @background-color-base;

    &__remove {
      display: none;
    }
  }

  &-selection--single {
    position: relative;
    height  : @input-height-base;
    cursor  : pointer;

    .@{select-prefix-cls}-selection__rendered {
      margin-right: 24px;
    }
  }

  &-no-arrow {
    .@{select-prefix-cls}-selection__rendered {
      margin-right: @control-padding-horizontal - 1px;
    }
  }

  &-selection__rendered {
    position    : relative;
    display     : block;
    margin-right: @control-padding-horizontal - 1px;
    margin-left : @control-padding-horizontal - 1px;
    line-height : @input-height-base - 2px;

    &:not(:first-child){
      padding-left: 22px;
    }

    &::after {
      display       : inline-block;
      width         : 0;
      visibility    : hidden;
      content       : '.';
      pointer-events: none;
    }
  }

  &-lg {
    font-size: @font-size-lg;

    .@{select-prefix-cls}-selection--single {
      height: @input-height-lg;
    }

    .@{select-prefix-cls}-selection__rendered {
      line-height: @input-height-lg - 2px;
    }

    .@{select-prefix-cls}-selection--multiple {
      min-height: @input-height-lg;

      .@{select-prefix-cls}-selection__rendered {
        li {
          height     : @input-height-lg - 8px;
          line-height: @input-height-lg - 8px;
        }
      }

      .@{select-prefix-cls}-selection__clear,
      .@{select-prefix-cls}-arrow {
        top: @input-height-lg / 2;
      }
    }
  }

  &-sm {
    .@{select-prefix-cls}-selection--single {
      height: @input-height-sm;
    }

    .@{select-prefix-cls}-selection__rendered {
      margin-left: @control-padding-horizontal-sm - 1px;
      line-height: @input-height-sm - 2px;
    }

    .@{select-prefix-cls}-selection--multiple {
      min-height: @input-height-sm;

      .@{select-prefix-cls}-selection__rendered {
        li {
          height     : @input-height-sm - 8px;
          line-height: @input-height-sm - 10px;
        }
      }

      .@{select-prefix-cls}-selection__clear,
      .@{select-prefix-cls}-arrow {
        top: @input-height-sm / 2;
      }
    }

    .@{select-prefix-cls}-selection__clear,
    .@{select-prefix-cls}-arrow {
      right: @control-padding-horizontal-sm;
    }
  }


  &-mini {
    font-size: @font-size-mini;

    .@{select-prefix-cls}-selection--single {
      height: @input-height-mini;
    }

    .@{select-prefix-cls}-selection__rendered {
      margin-left: @control-padding-horizontal-mini - 1px;
      line-height: @input-height-mini - 2px;
    }

    .@{select-prefix-cls}-selection--multiple {
      min-height: @input-height-mini;

      .@{select-prefix-cls}-selection__rendered {
        li {
          height     : @input-height-mini - 8px;
          line-height: @input-height-mini - 10px;
        }
      }

      .@{select-prefix-cls}-selection__clear,
      .@{select-prefix-cls}-arrow {
        top: @input-height-mini / 2;
      }
    }

    .@{select-prefix-cls}-selection__clear,
    .@{select-prefix-cls}-arrow {
      right     : @control-padding-horizontal-mini;
      font-size : 12px;
      margin-top: -6px;
    }
  }


  &-disabled &-selection__choice__remove {
    color : @disabled-color;
    cursor: default;

    &:hover {
      color: @disabled-color;
    }
  }

  &-search__field__wrap {
    position: relative;
    display : inline-block;
  }

  &-selection__placeholder,
  &-search__field__placeholder {
    // for TreeSelect compatibility
    position     : absolute;
    top          : 50%;
    right        : 9px;
    left         : 0;
    max-width    : 100%;
    height       : 20px;
    margin-top   : -10px;
    overflow     : hidden;
    color        : @input-placeholder-color;
    line-height  : 20px;
    white-space  : nowrap;
    text-align   : left;
    text-overflow: ellipsis;
  }

  &-search__field__placeholder {
    left: @control-padding-horizontal;
  }

  &-selection__rendered {
    
    &:not(:first-child){
      .@{select-prefix-cls}-selection__placeholder {
        left: 18px;
      }
    }
    
  }

  &-search__field__mirror {
    position      : absolute;
    top           : 0;
    left          : 0;
    white-space   : pre;
    opacity       : 0;
    pointer-events: none;
  }

  &-search--inline {
    position: absolute;
    width   : 100%;
    height  : 100%;

    .@{select-prefix-cls}-search__field__wrap {
      width : 100%;
      height: 100%;
    }

    .@{select-prefix-cls}-search__field {
      width        : 100%;
      height       : 100%;
      font-size    : 100%;
      line-height  : 1;
      background   : transparent;
      border-width : 0;
      border-radius: @border-radius-base;
      outline      : 0;
    }

    >i {
      float: right;
    }
  }

  &-selection--multiple {
    min-height    : @input-height-base;
    padding-bottom: 3px;
    cursor        : text;
    .clearfix;

    .@{select-prefix-cls}-search--inline {
      position : static;
      float    : left;
      width    : auto;
      max-width: 100%;
      padding  : 0;

      .@{select-prefix-cls}-search__field {
        width    : 0.75em;
        max-width: 100%;
        padding  : 1px;
      }
    }

    .@{select-prefix-cls}-selection__rendered {
      height       : auto;
      margin-bottom: -3px;
      margin-left  : 5px;
    }

    .@{select-prefix-cls}-selection__placeholder {
      margin-left: 6px;
    }

    >ul>li,
    .@{select-prefix-cls}-selection__rendered>ul>li {
      height     : @input-height-base - 8px;
      // for tree-select
      margin-top : 3px;
      line-height: @input-height-base - 8px - 2px;
    }

    .@{select-prefix-cls}-selection__choice {
      position        : relative;
      float           : left;
      max-width       : 99%;
      margin-right    : 4px;
      padding         : 0 20px 0 10px;
      overflow        : hidden;
      color           : @tag-default-color;
      background-color: @tag-default-bg;
      border          : 1px solid @border-color-split;
      border-radius   : @border-radius-sm;
      cursor          : default;
      transition      : padding 0.3s @ease-in-out;

      &__disabled {
        padding: 0 10px;
      }
    }

    .@{select-prefix-cls}-selection__choice__content {
      display      : inline-block;
      max-width    : 100%;
      overflow     : hidden;
      white-space  : nowrap;
      text-overflow: ellipsis;
      transition   : margin 0.3s @ease-in-out;
    }

    .@{select-prefix-cls}-selection__choice__remove {
      .iconfont-mixin();

      position   : absolute;
      right      : 4px;
      display    : inline-block;
      color      : @text-color-secondary;
      font-weight: bold;
      font-size  : @font-size-sm;
      line-height: inherit;
      cursor     : pointer;
      transition : all 0.3s;
      .iconfont-size-under-12px(10px);

      &:hover {
        color: @icon-color-hover;
      }
    }

    .@{select-prefix-cls}-selection__clear,
    .@{select-prefix-cls}-arrow {
      top: @input-height-base / 2;
    }
  }

  &-allow-clear &-selection--multiple &-selection__rendered,
  &-show-arrow &-selection--multiple &-selection__rendered {
    margin-right: 20px; // In case that clear button will overlap content
  }

  &-open {
    .@{select-prefix-cls}-arrow {
      &-icon svg {
        transform: rotate(180deg);
      }
    }

    .@{select-prefix-cls}-selection {
      .active();
    }
  }

  &-combobox {
    .@{select-prefix-cls}-arrow {
      display: none;
    }

    .@{select-prefix-cls}-search--inline {
      float : none;
      width : 100%;
      height: 100%;
    }

    .@{select-prefix-cls}-search__field__wrap {
      width : 100%;
      height: 100%;
    }

    .@{select-prefix-cls}-search__field {
      position  : relative;
      z-index   : 1;
      width     : 100%;
      height    : 100%;
      box-shadow: none;
      transition: all 0.3s @ease-in-out, height 0s;
    }
  }

  &-combobox&-allow-clear &-selection:hover &-selection__rendered,
  &-combobox&-show-arrow &-selection:hover &-selection__rendered {
    margin-right: 20px; // In case that clear button will overlap content
  }
}

.@{select-prefix-cls}-dropdown {
  .reset-component;

  position        : absolute;
  top             : -9999px;
  left            : -9999px;
  z-index         : @zindex-dropdown;
  box-sizing      : border-box;
  font-size       : @font-size-base;
  font-variant    : initial;
  background-color: @select-dropdown-bg;
  border-radius   : @border-radius-base;
  outline         : none;
  box-shadow      : @box-shadow-base;

  &.slide-up-enter.slide-up-enter-active&-placement-bottomLeft,
  &.slide-up-appear.slide-up-appear-active&-placement-bottomLeft {
    animation-name: vcuSlideUpIn;
  }

  &.slide-up-enter.slide-up-enter-active&-placement-topLeft,
  &.slide-up-appear.slide-up-appear-active&-placement-topLeft {
    animation-name: vcuSlideDownIn;
  }

  &.slide-up-leave.slide-up-leave-active&-placement-bottomLeft {
    animation-name: vcuSlideUpOut;
  }

  &.slide-up-leave.slide-up-leave-active&-placement-topLeft {
    animation-name: vcuSlideDownOut;
  }

  &-hidden {
    display: none;
  }

  &-menu {
    max-height   : 250px;
    margin-bottom: 0;
    padding      : @select-dropdown-edge-child-vertical-padding 0; //Change
    padding-left : 0; // Override default ul/ol
    overflow     : auto;
    list-style   : none;
    outline      : none;

    &-item-group-list {
      margin : 0;
      padding: 0;

      >.@{select-prefix-cls}-dropdown-menu-item {
        padding-left: 20px;
      }
    }

    &-item-group-title {
      height     : 32px;
      padding    : 0 @control-padding-horizontal;
      color      : @text-color-secondary;
      font-size  : @font-size-sm;
      line-height: 32px;
    }

    &-item-group-list &-item:first-child:not(:last-child),
    &-item-group:not(:last-child) &-item-group-list &-item:last-child {
      border-radius: 0;
    }

    &-item {
      position     : relative;
      display      : block;
      padding      : @select-dropdown-vertical-padding @control-padding-horizontal;
      overflow     : hidden;
      color        : @text-color;
      font-weight  : normal;
      font-size    : @select-dropdown-font-size;
      line-height  : @select-dropdown-line-height;
      white-space  : nowrap;
      text-overflow: ellipsis;
      cursor       : pointer;
      transition   : background 0.3s ease;

      &:hover:not(&-disabled) {
        background-color: @item-hover-bg;
      }

      &:first-child {
        & when (@select-dropdown-edge-child-vertical-padding =0) {
          border-radius: @border-radius-base @border-radius-base 0 0;
        }
      }

      &:last-child {
        & when (@select-dropdown-edge-child-vertical-padding =0) {
          border-radius: 0 0 @border-radius-base @border-radius-base;
        }
      }

      &-selected {
        color           : @text-color;
        font-weight     : @select-item-selected-font-weight;
        background-color: @select-item-selected-bg;
      }

      &-disabled {
        color : @disabled-color;
        cursor: not-allowed;

        &:hover {
          color : @disabled-color;
          cursor: not-allowed;
        }

      }

      &-active:not(&-disabled) {
        background-color: @select-item-active-bg;
      }

      &-divider {
        height          : 1px;
        margin          : 1px 0;
        overflow        : hidden;
        line-height     : 0;
        background-color: @border-color-split;
      }
    }
  }

  &&--multiple {
    .@{select-prefix-cls}-dropdown-menu-item {
      padding-right: @control-padding-horizontal + 20;

      & .@{select-prefix-cls}-selected-icon {
        position   : absolute;
        top        : 50%;
        right      : @control-padding-horizontal;
        color      : transparent;
        font-weight: bold;
        font-size  : 12px;
        text-shadow: 0 0.1px 0, 0.1px 0 0, 0 -0.1px 0, -0.1px 0;
        transform  : translateY(-50%);
        transition : all 0.2s;
      }

      &:hover .@{select-prefix-cls}-selected-icon {
        color: fade(@black, 87%);
      }

      &-disabled .@{select-prefix-cls}-selected-icon {
        display: none;
      }

      &-selected .@{select-prefix-cls}-selected-icon,
      &-selected:hover .@{select-prefix-cls}-selected-icon {
        display: inline-block;
        color  : @primary-color;
      }
    }
  }

  &--empty&--multiple &-menu-item {
    padding-right: @control-padding-horizontal;
  }

  &-container-open,
  &-open {
    .@{select-prefix-cls}-dropdown {
      display: block;
    }
  }
}